Писал приложение под iOS, не задумываясь над различиями в ShowModal для разных платформ. В результате - когда назрела мысль портировать приложение под Android столкнулся с тем, что переделать код, использующий ShowModal на callback-вызовы очень сложно. Подумал, что может быть можно использовать эмуляцию, например:
function myMessageDialog(...): Integer;
var
mr: TModalResult;
begin
mr:=mrNone;
TDialogService.MessageDialog(...
procedure (const AResult: TModalResult)
begin
mr:=AResult
end);
while mr = mrNone do // ждем пока не сработает callback
Application.ProcessMessages;
Result:=mr; // и возвращаем результат
end;
Но... работать не хочет.
Почему? Ведь несмотря на то, что нативный диалог вызывается в контексте UI thread, коллбак и ProcessMessages работают в основном потоке приложения.
Вопрос
kami
Добрый день всем!
Писал приложение под iOS, не задумываясь над различиями в ShowModal для разных платформ. В результате - когда назрела мысль портировать приложение под Android столкнулся с тем, что переделать код, использующий ShowModal на callback-вызовы очень сложно. Подумал, что может быть можно использовать эмуляцию, например:
Но... работать не хочет.
Почему? Ведь несмотря на то, что нативный диалог вызывается в контексте UI thread, коллбак и ProcessMessages работают в основном потоке приложения.
Ссылка на комментарий
7 ответов на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.